package com.mall.b2c.hessian;

import com.mall.common.hessian.BaseHessian;

import java.util.Map;

public interface GoodsHessian extends BaseHessian {

	/**
	 * 获取商品分类
	 * 
	 * @param catIds
	 *            分类id
	 * @param isVisible
	 *            是否前台显示
	 * @param parentId
	 *            父分类id
	 * @param isRecommend
	 *            是否推荐
	 * @param num
	 *            数量
	 * @return
	 */
	String getGoodsCategoryList(Long[] catIds, Boolean isVisible, Long parentId, Boolean isRecommend, Integer num,
			String orderBy);

	/**
	 * 获取指定分类的父分类
	 * 
	 * @param catId
	 *            分类id
	 * @return
	 */
	String getCoodsCategoryParent(Long catId);

	/**
	 * 获取指定分类
	 * 
	 * @param catId
	 *            分类id
	 * @return
	 */
	String getCoodsCategory(Long catId);

	/**
	 * 通过指定条件查找商品分页数据
	 * 
	 * @param goodsCategoryIds
	 *            商品分类ids
	 * @param goodsCategoryCodes
	 *            商品分类codes
	 * @param brandId
	 *            品牌id
	 * @param tagIds
	 *            标签ids
	 * @param providerIds
	 *            提供商ids
	 * @param page
	 *            当前页码
	 * @param size
	 *            分页大小
	 * @return
	 */
	String findPagerData(Long memberId, Long[] goodsCategoryIds, String[] goodsCategoryCodes, Long brandId,
			Long[] tagIds, Long[] providerIds, Long storeId, Integer page, Integer size);

	/**
	 * 获取商品数据
	 * 
	 * @param id
	 *            商品id
	 * @param memberId
	 *            帐号id
	 * @return
	 */
	String getGoodsData(Long id, String code, Long memberId);//TODO

	/**
	 * 获取商品购买记录
	 * 
	 * @param goodsId
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	String getGoodsBuyRecords(Long goodsId, Integer pageNumber, Integer pageSize);

	/**
	 * 获取商品详情页数据
	 * 
	 * @param id
	 * @param code
	 * @return
	 */
	String getGoodsDetail(Long id, String code, Long memberId);

	/**
	 * 获取商品列表页
	 * 
	 * @param uri
	 * @param keyword
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	String list(String uri, String keyword, Long memberId, Long storeId, Integer pageNumber, Integer pageSize, String pluginBundle);

	/**
	 * 获取商品列表数据
	 * 
	 * @param goodsCategoryId
	 * @param goodsCategoryCode
	 * @param brandId
	 * @param tagId
	 * @param count
	 * @param hasStock
	 * @param orderBy
	 * @return
	 */
	String getGoodsListData(Long goodsCategoryId, String goodsCategoryCode, Long brandId, Long tagId, Integer count,
			Boolean hasStock, String orderBy, Long memberId, Long storeId);

	/**
	 * 搜索下拉提示
	 * 
	 * @param keyword
	 * @return
	 */
	String getSearchTip(String keyword, Integer count);

	/**
	 * 通过Lucene查询商品分页数据
	 * 
	 * @param keyword
	 * @param filterMap
	 *            brandName 品牌名称 categoryCode 分类code manufacturer 生产厂家 drugForm
	 *            剂型 goodsType 商品类型 prescribeType 处方类型 medicalInsuranceType 医保类型
	 *            goodsSort 商品排序
	 * @return
	 */
	String searchByKeyword(String keyword, Map<String, String> filterMap, String goodsSort, Integer page, Integer size);
}
